defmodule <%= name %> do
  @moduledoc false
  use Protobuf<%= options %>

  <%= typespec %>
  defstruct [<%= struct_fields %>]

  <%= if not is_nil(desc) do %>
  def descriptor do
    # credo:disable-for-next-line
    <%= desc.__struct__ %>.decode(
      <%= desc.__struct__.encode(desc |> Map.from_struct() |> Enum.filter(fn {_, x} -> x != nil end) |> desc.__struct__.new()) |> inspect(limit: :infinity) %>
    )
  end
  <% end %>

<%= for v <- oneofs do %>  <%= v %>
<% end %>

<%= for f <- fields do %>  field <%= f %>
<% end %>

  <%= if not is_nil(extensions) do %>
  extensions <%= extensions %>
  <% end %>
end
